<?php
#自定义session处理驱动可以让我们灵活的处理和管理session,并且更好的服务我们的网站
#实现接口的时候一定要把里面定义的方法全部实现了
class FileHandle implements SessionHandlerInterface
{
    //写入目录
    protected $path = 'session';
    //过期时间
    protected $maxlifetime = 1440;
    /**
     * 构建函数
     *
     * @param string $path 保存目录
     * @param integer $maxlifetime 过期时间
     */
    public function __construct(string $path = 'session', int $maxlifetime = 1440)
    {
        $this->path = $path;
        $this->maxlifetime = $maxlifetime;
    }
    /**
     * 关闭
     *
     * @return void
     */
    public function close()
    {
        return true;
    }
    /**
     * 销毁
     *
     * @param [type] $session_id
     * @return void
     */
    public function destroy($session_id)
    {
        return (bool)@unlink($this->path . '/' . $session_id);
    }
    /**
     * 垃圾回收
     *
     * @param [type] $maxlifetime
     * @return void
     */
    public function gc($maxlifetime)
    {
        foreach (glob($this->path . '/*') as $file) {
            if (filemtime($file) + $this->maxlifetime < time()) {
                @unlink($file);
            }
        }
        return true;
    }
    /**
     * 开启
     *
     * @param [type] $save_path
     * @param [type] $session_name
     * @return void
     */
    public function open($save_path,  $session_name)
    {
        var_dump($this->path);
        if(!is_dir($this->path)){
            mkdir($this->path,0777,true);
        };
    }
    /**
     * 读取会话数据
     *
     * @param [type] $session_id
     * @return void
     */
    public function read($session_id)
    {
        return file_get_contents($this->path . '/' . $session_id);
    }
    /**
     * 写入会话
     *
     * @param [type] $session_id
     * @param [type] $session_data
     * @return void
     */
    public function write($session_id,  $session_data)
    {
        return (bool)file_put_contents($this->path . '/' . $session_id, $session_data);
    }
}